const {moment} = require("/utils/core");
import requset from "/utils/request";
import clock from "/api/clock/index"
import { showToast } from "/utils/common";
Page({
  data: {
    dateUnit: "month",// day  week month 日期单位
    form: {
      createTimeFrom: "",
      createTimeTo: "", 
      merchantName: "",//商户名
      dingUserId: "" //销售人员钉钉id
    },
    list: []
  },
  onLoad(option) {
    // 
    this.setData({
      "form.dingUserId": option && option.dingUserId,
      "form.merchantName": option && option.merchantName
    })
    // 0- 显示默认当前日
    this.getSwitchDateText({ value: "month" })
    this.queryStatisticsData(this.data.form);
  },
  //日期切换显示--
  dateChange(e) {
    this.getSwitchDateText({ value: e.currentTarget.dataset.dateUnit });
    this.setData({
      dateUnit: e.currentTarget.dataset.dateUnit
    });
    this.queryStatisticsData(this.data.form)
  },
  // 上一日期
  lastDate() {
    this.getSwitchDateText({ value: this.data.dateUnit, lastDate: true });
    this.queryStatisticsData(this.data.form)
  },
  // 下一日期
  nextDate() {
    // 0-需要处理 下一日期不能是未来日期  未来日期没有打卡
    this.getSwitchDateText({ value: this.data.dateUnit, nextDate: true })
    this.queryStatisticsData(this.data.form)
  },
  getSwitchDateText({ value, lastDate = false, nextDate = false }) {
    //0-
    switch (value) {
      case "day":
        // 0-  dateUnit = 'day'单位切换下的开始日期 和结束日期 切换
        let startDayDate = moment().format("YYYY-MM-DD"); // 当前天
        let endDayDate = startDayDate; // 当前天
        // 1- 上一周 下一周 lastDate  nextDate
        let countStartDayDate = moment(this.data.form.createTimeFrom).subtract((lastDate ? 1 : -1), "days").format("YYYY-MM-DD");
        countStartDayDate = moment(countStartDayDate).isAfter(startDayDate, 'day') ? startDayDate : countStartDayDate; // 当前天 之后未来天不可选 true---未来日期
        let countEndDayDate = countStartDayDate;
        this.data.form.createTimeFrom = lastDate || nextDate ? countStartDayDate : startDayDate;
        this.data.form.createTimeTo = lastDate || nextDate ? countEndDayDate : endDayDate;
        break;
      case "week":
        // 0-dateUnit==week----单位切换下的开始日期 和结束日期 切换
        const startWeekDate = moment().startOf('week').format("YYYY-MM-DD"); // 当前天所在周的第一天日期
        const endWeekDate = moment().endOf('week').format("YYYY-MM-DD"); // 当前天所在周的最后一天日期
        //1-上一周 下一周 lastDate  nextDate
        let countStartWeekDate = moment().weeks(moment(this.data.form.createTimeFrom).weeks() - (lastDate ? 1 : -1)).startOf('week').format("YYYY-MM-DD"); // 计算当前天所在周    上周或者下周的第一天日期
        let countEndWeekDate = moment().weeks(moment(this.data.form.createTimeTo).weeks() - (lastDate ? 1 : -1)).endOf('week').format("YYYY-MM-DD");// 计算当前天所在周的   上周或者下周的最后一天日期
        // 2-处理当前日期所在周 下一周 的未来日期不可选
        countStartWeekDate = moment(countStartWeekDate).isAfter(startDayDate, 'week') ? startWeekDate : countStartWeekDate;
        countEndWeekDate = moment(countEndWeekDate).isAfter(startDayDate, 'week') ? endWeekDate : countEndWeekDate;
        this.data.form.createTimeFrom = lastDate || nextDate ? countStartWeekDate : startWeekDate;
        this.data.form.createTimeTo = lastDate || nextDate ? countEndWeekDate : endWeekDate;
        break;
      case "month":
        // 0-dateUnit==month----单位切换下的开始日期 和结束日期 切换
        const startMonthDate = moment().month(moment().month()).startOf('month').format('YYYY-MM-DD'); // 当前天所在月的第一天日期
        const endMonthDate = moment().month(moment().month()).endOf('month').format('YYYY-MM-DD'); // 当前天所在月的最后一天日期
         //1-上一周 下一周 lastDate  nextDate
        let countStartMonthDate = moment().month(moment(this.data.form.createTimeFrom).month() - (lastDate ? 1 : -1)).startOf('month').format('YYYY-MM-DD'); // 计算当前天所在月  上月或者下月  的第一天 日期  
        let countEndMonthDate = moment().month(moment(this.data.form.createTimeTo).month() - (lastDate ? 1 : -1)).endOf('month').format('YYYY-MM-DD');// 计算当前天所在月   上月或者下月  的最后一天 日期
        // 2-处理当前日期所在月 下一月 的未来日期不可选
        countStartMonthDate = moment(countStartMonthDate).isAfter(startMonthDate, 'month') ? startMonthDate : countStartMonthDate;
        countEndMonthDate = moment(countEndMonthDate).isAfter(endMonthDate, 'month') ? endMonthDate : countEndMonthDate;
        this.data.form.createTimeFrom = lastDate || nextDate ? countStartMonthDate : startMonthDate;
        this.data.form.createTimeTo = lastDate || nextDate ? countEndMonthDate : endMonthDate;
        break;
      default:
        break;
    }

    this.setData({
      form: this.data.form
    })
  },
  goSaleClockDetail(e) {
    dd.navigateTo({
      url: `/pages/visitClock/saleClockDetail/saleClockDetail?item=${JSON.stringify(e.currentTarget.dataset.item)}&form=${JSON.stringify(this.data.form)}&dateUnit=${this.data.dateUnit}`
    })
  },
  queryStatisticsData(option) {
    this.setData({
      list: []
    })
    dd.showLoading({
      content: "加载中..."
    })
    requset({
      url: clock.getStatistics,
      data: option
    }).then((res) => {
        // 过滤userInfo为空的 数据  不展示
        res.voList = res.voList.filter((item) => item.userInfo && item.totalVisit);
        this.setData({
          list: res.voList
        })
        dd.hideLoading()
    })
  }
});
